package top.byteio.common.core.enums.result;

/**
 * 请求返回状态码
 *
 * @author lerryxia
 */
public enum HttpStatus implements ICode {

    /**
     * 请求成功
     */
    OK(200, "请求成功"),

    /**
     * 对象创建成功
     */
    CREATED(201, "对象创建成功"),

    /**
     * 请求已经被接受
     */
    ACCEPTED(202, "请求已经被接受"),

    /**
     * 请求为空
     */
    REQUEST_IS_NULL(203, "请求为空"),

    /**
     * 操作已经执行成功，但是没有返回数据
     */
    NO_CONTENT(204, "操作已经执行成功，但是没有返回数据"),

    /**
     * 对象创建失败
     */
    CREATED_FAIL(205, "对象创建失败"),

    /**
     * 资源已被移除
     */
    MOVED_PERM(301, "资源已被移除"),

    /**
     * 重定向
     */
    SEE_OTHER(303, "重定向"),

    /**
     * 资源没有被修改
     */
    NOT_MODIFIED(304, "资源没有被修改"),

    /**
     * 参数列表错误（缺少，格式不匹配）
     */
    BAD_REQUEST(400, "参数列表错误（缺少，格式不匹配）"),

    /**
     * 未授权
     */
    UNAUTHORIZED(401, "未授权"),

    /**
     * 禁止访问
     */
    FORBIDDEN(403, "禁止访问"),

    /**
     * 资源，服务未找到
     */
    NOT_FOUND(404, "资源，服务未找到"),

    /**
     * 不允许的http方法
     */
    BAD_METHOD(405, "不允许的http方法"),

    /**
     * 请求超时
     */
    REQUEST_TIMEOUT(408, "请求超时"),

    /**
     * 资源冲突，或者资源被锁
     */
    CONFLICT(409, "资源冲突，或者资源被锁"),

    /**
     * 不支持的数据，媒体类型
     */
    UNSUPPORTED_TYPE(415, "不支持的数据，媒体类型"),

    /**
     * token已过期
     */
    TOKEN_EXPIRED(424, "token已过期"),

    /**
     * 请求次数过多
     */
    TOO_MANY_REQUESTS(429, "请求次数过多"),

    /**
    * 请求失败
    */
    FAILED(444, "失败"),
    /**
     * 系统内部错误
     */
    ERROR(500, "系统内部错误"),

    /**
     * 接口未实现
     */
    NOT_IMPLEMENTED(501, "接口未实现"),

    /**
     * 无效网关
     */
    BAD_GATEWAY(502, "无效网关"),

    /**
     * 服务不可用
     */
    SERVICE_UNAVAILABLE(503, "服务不可用"),

    /**
     * 网关超时
     */
    GATEWAY_TIMEOUT(504, "网关超时"),

    /**
     * 系统警告消息
     */
    WARN(601, "系统警告消息");

    private final int code;

    private final String message;

    HttpStatus(int code, String message) {
        this.code = code;
        this.message = message;
    }

    /**
     * 返回码
     */
    @Override
    public int getCode() {
        return code;
    }

    /**
     * 返回信息
     */
    @Override
    public String getMessage() {
        return message;
    }
}
